
package TokensDelLenguaje;

import PolacaInversa.Registro;

public class Token_Uinteger extends Token_Uint{
    
    // Maximos y Minimos Valores para constantes Ulongint
    public static final long Minimo = 0;
    public static final long Maximo = 65535;  // (2 exp 16) - 1
    
    public Token_Uinteger(){
      super(Tokens.const_uinteger);
    }
    
  public Token_Uinteger(Long valor){
     super(Tokens.const_uinteger);
     this.valor = valor;
    }
  
    @Override 
    public String getCadena(){
        return "" + this.valor + "ui";
    }
    
    @Override
    public void setLong(Long valor) {
    if( Minimo <= valor && valor <= Maximo){
         this.valor = valor;
      }
    }

    @Override
    public int getTamano() {
        return 2;
    }
    
    @Override
   public Object clone(){
       Token_Uinteger copia = null;
       
       copia = (Token_Uinteger)super.clone();
       if (this.valor != null){
           copia.setLong(this.valor);
       }
       
       return copia;
   }

    @Override
    public String conversion(Registro r) {
        String s = "MOV " + r.nombre + ", 0\n";
        s += "MOV " + r.nombre.substring(r.nombre.length()-2) + ", " + this.getNombre() + "\n";
        return s;
    }
 
}
